package org.dxy.infrastructure.persistent.db.mybatispuls.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.dxy.infrastructure.persistent.db.mybatispuls.po.query.SubstituteMaterialViewPo;

import java.util.List;

/**
 * 替代料视图服务接口
 * @author dxy
 * @createTime 2025/9/13
 */
public interface SubstituteMaterialViewService extends IService<SubstituteMaterialViewPo> {
    
    /**
     * 分页查询替代料列表
     */
    Page<SubstituteMaterialViewPo> list(Page<SubstituteMaterialViewPo> page, SubstituteMaterialViewPo query);
    
    /**
     * 根据ID查询替代料详情
     */
    SubstituteMaterialViewPo getById(Long id);
    
    /**
     * 根据MBOM ID查询替代料列表
     */
    List<SubstituteMaterialViewPo> getByMbomId(Long mbomId);
    
    /**
     * 根据MBOM项ID查询替代料列表
     */
    List<SubstituteMaterialViewPo> getByMbomItemId(Long mbomItemId);
    
    /**
     * 根据状态查询替代料列表
     */
    List<SubstituteMaterialViewPo> getByStatus(String status);
    
    /**
     * 根据主料编码查询替代料列表
     */
    List<SubstituteMaterialViewPo> getByMainMaterialCode(String mainMaterialCode);
    
    /**
     * 根据替代料编码查询替代料列表
     */
    List<SubstituteMaterialViewPo> getBySubstituteMaterialCode(String substituteMaterialCode);
    
    /**
     * 查询可用的替代料（状态为ACTIVE且在有效期内）
     */
    List<SubstituteMaterialViewPo> getAvailableSubstitutes(Long mbomItemId);
}